package com.unknowpupil.design.template;

/**
 * @Description: <p>
 *  模板方法模式
 * </p>
 * @Author: <a> w10g </a>
 * @CreateDate: Create in 2020/4/28 15:36
 * @Classname: BankTemplateMethod
 * @Version: 1.0
 */
public abstract class BankTemplateMethod {


    /**
     * 具体方法
     */
    public void takeNumber(){
        System.out.println("取号排队");
    }

    /**
     * 办理具体业务  钩子方法。
     */
    public abstract void transact();


    public void evaluate(){
        System.out.println("反馈评分");
    }

    /**
     * 模板，不可变。
     */
    public final void process(){
        this.takeNumber();

        this.transact();

        this.evaluate();
    }
}
